import java.util.Arrays; import java.util.Comparator; import TurtleGraphics.KeyboardReader; public class Order { public static class Word { private String word; private int num; private int newNum; public Word(String word, int num) { this.word = word; this.num = num; } public String getWord() { return word; } public void setWord(String word) { this.word = word; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public int getNewNum() { return newNum; } public void setNewNum(int newNum) { this.newNum = newNum; } } public static void main(String[] args) { // TODO Auto-generated method stub KeyboardReader rdr = new KeyboardReader(); String in = rdr.readLine("Enter words separated by a space: "); //Order.Word[] wordObjects = {new Word(), new Word()}; Order.Word[] wordObjects; String[] words = in.split(","); wordObjects = new Order.Word[words.length]; Order.Word w; for (int count = 0; count < words.length; count++) { w = new Order.Word(words[count], count+1); wordObjects[count] = w; } /* Arrays.sort(words, new Comparator<String>() { @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub System.out.println(o1.toUpperCase().compareTo(o2.toUpperCase())); return o1.toUpperCase().compareTo(o2.toUpperCase()); } }); */ Arrays.sort(wordObjects, new Comparator<Order.Word>() { @Override public int compare(Word o1, Word o2) { // TODO Auto-generated method stub //System.out.println(o1.getWord().toUpperCase().compareTo(o2.getWord().toUpperCase())); return o1.getWord().toUpperCase().compareTo(o2.getWord().toUpperCase()); } }); /* for (String word : words) { System.out.println(word); } */ for (int count = 0; count < wordObjects.length; count++) { wordObjects[count].setNewNum(count+1); //System.out.println(word.getWord() + " (" + word.getNum() + ")"); } Arrays.sort(wordObjects, new Comparator<Order.Word>() { @Override public int compare(Word o1, Word o2) { // TODO Auto-generated method stub //System.out.println(o1.getWord().toUpperCase().compareTo(o2.getWord().toUpperCase())); return Integer.compare(o1.getNum(), o2.getNum()); // don't use getNewNum, because that will cause the words to remain sorted in alphabetical order. // We want them in their original order } }); for (int count = 0; count < wordObjects.length; count++) { System.out.println(wordObjects[count].getWord() + " " + wordObjects[count].getNewNum()); //System.out.println(word.getWord() + " (" + word.getNum() + ")"); } //System.out.println('i'-'t'); //System.out.println((char) (66+32)); } } // G B N D